#pragma once

#include "generator-support.h"

namespace cccn
{

class SynchronizabilityCalc
  {
  public:
    /**
     * Calculate the eigenvalues of the Lapican of the graph adjacency matrix
     */
    SynchronizabilityCalc (const Graph& g);

    /**
     * \return lambda_2
     */
    double GetSyncValue () const;
    /**
     * \return lambda_2 / lambda_n
     */
    double GetSyncRatio () const;

  private:
    /// the second smallest eigenvalue
    double m_eigenvalue_2;
    /// the largest eigenvalue
    double m_eigenvalue_n;

    /// the graph whose syncrhonizability is being evaluated
    const Graph& m_g;
  };
} // namespace cccn